package top.swimmer.tokenizer.core;

import top.swimmer.tokenizer.dictionary.DictionaryFactory;

/**
 * Created by xiaoyou on 16-12-11.
 */
public class T_Base {
    public static void main(String[] args) {
        int count = 10000;
        DictionaryFactory.getDoubleArrayTrieDictionary().getMaxWordLength();
        ForwardMaximumMatching forwardMaximumMatching = new ForwardMaximumMatching(DictionaryFactory.getDoubleArrayTrieDictionary());
        ForwardMinimumMatching forwardMinimumMatching = new ForwardMinimumMatching();
        ReverseMaximumMatching reverseMaximumMatching = new ReverseMaximumMatching();
        ReverseMinimumMatching reverseMinimumMatching = new ReverseMinimumMatching();
        Long start1 = System.currentTimeMillis();
        for (int i = 0; i < count; i++) {
            forwardMaximumMatching.segmentation("如遇到【墙体长毛，发霉】您可以通过自助报修预约，工程师会按照您预约的时间上门。\n" +
                    " 预约步骤为：\n" +
                    " 空间类型为【按照物品所坏的区域选择即可】；\n" +
                    " 维修类型为【主体】；\n" +
                    " 维修故障按照实际情况选择即可；\n" +
                    " 预约时间为【20点之前预约第二天上门，20点之后预约第三天上门】；\n" +
                    " 维修上门时间为【9点至20点】； \n" +
                    " 点击【确定】后会进入到报修页面后确认无误后点击【确认报修】即可。\n" +
                    " 温馨提示：少部分区域会因为配置物品不同，导致上门时间不一样。");
        }
        Long end1 = System.currentTimeMillis();
        System.out.println("正向最大匹配：" + (end1 - start1));

        Long start2 = System.currentTimeMillis();
        for (int i = 0; i < count; i++) {
            forwardMinimumMatching.segmentation("如遇到【墙体长毛，发霉】您可以通过自助报修预约，工程师会按照您预约的时间上门。\n" +
                    " 预约步骤为：\n" +
                    " 空间类型为【按照物品所坏的区域选择即可】；\n" +
                    " 维修类型为【主体】；\n" +
                    " 维修故障按照实际情况选择即可；\n" +
                    " 预约时间为【20点之前预约第二天上门，20点之后预约第三天上门】；\n" +
                    " 维修上门时间为【9点至20点】； \n" +
                    " 点击【确定】后会进入到报修页面后确认无误后点击【确认报修】即可。\n" +
                    " 温馨提示：少部分区域会因为配置物品不同，导致上门时间不一样。");
        }
        Long end2 = System.currentTimeMillis();
        System.out.println("正向最小匹配：" + (end2 - start2));

        Long start3 = System.currentTimeMillis();
        for (int i = 0; i < count; i++) {
            reverseMaximumMatching.segmentation("如遇到【墙体长毛，发霉】您可以通过自助报修预约，工程师会按照您预约的时间上门。\n" +
                    " 预约步骤为：\n" +
                    " 空间类型为【按照物品所坏的区域选择即可】；\n" +
                    " 维修类型为【主体】；\n" +
                    " 维修故障按照实际情况选择即可；\n" +
                    " 预约时间为【20点之前预约第二天上门，20点之后预约第三天上门】；\n" +
                    " 维修上门时间为【9点至20点】； \n" +
                    " 点击【确定】后会进入到报修页面后确认无误后点击【确认报修】即可。\n" +
                    " 温馨提示：少部分区域会因为配置物品不同，导致上门时间不一样。");
        }
        Long end3 = System.currentTimeMillis();
        System.out.println("逆向最大匹配：" + (end3 - start3));

        Long start4 = System.currentTimeMillis();
        for (int i = 0; i < count; i++) {
            reverseMinimumMatching.segmentation("如遇到【墙体长毛，发霉】您可以通过自助报修预约，工程师会按照您预约的时间上门。\n" +
                    " 预约步骤为：\n" +
                    " 空间类型为【按照物品所坏的区域选择即可】；\n" +
                    " 维修类型为【主体】；\n" +
                    " 维修故障按照实际情况选择即可；\n" +
                    " 预约时间为【20点之前预约第二天上门，20点之后预约第三天上门】；\n" +
                    " 维修上门时间为【9点至20点】； \n" +
                    " 点击【确定】后会进入到报修页面后确认无误后点击【确认报修】即可。\n" +
                    " 温馨提示：少部分区域会因为配置物品不同，导致上门时间不一样。");
        }
        Long end4 = System.currentTimeMillis();
        System.out.println("逆向最小匹配：" + (end4 - start4));
    }
}
